
#include <compiler.h>

#ifndef __HID_H__
#define __HID_H__

/** PS/2只支持以下3个LED */
#define HID_LED_NUM_LOCK 0x01
#define HID_LED_CAPS_LOCK 0x02
#define HID_LED_SCSROLL_LOCK 0x04

typedef struct
{
    UINT8 type;      // 类型 (0:none/80H:Input/90H:Output/B0H:Feature)
    UINT8 reportId;  // 报告ID
    UINT16 bitBegin; // 起始位
    UINT8 bitSize;   // 位大小
    UINT8 usagePage; // 用途页
    UINT8 usage;     // 用途
    long usageMin;   // 最小值
    long usageMax;   // 最大值
} _REPORT_MAP;
extern __xdata __at(0x0600) UINT8 REPORT_MAP_AREA[512]; // 存放分析报表描述符后的结果


void hid_init();          // 读取报表描述符设置HID设备
void hid_parseInDataKB(PUINT8X DataBuf, UINT8 nLen); // 解析INDATA
void hid_parseInDataMS(PUINT8X DataBuf, UINT8 nLen); // 解析INDATA

void hid_setup(UINT8 attrib, UINT8 value); // 设置HID设备
#endif